/*
*    Author : heiden deng(dengjianquan@beyondcent.com)
*    2017/05/15
*    version 0.0.9
*    注册中心服务接口函数定义
*/

#ifndef HTSC_REGISTRY_SERVICE_H
#define HTSC_REGISTRY_SERVICE_H

#ifdef __cplusplus
extern "C" {
#endif

#include "url.h"


/**
* 回调函数声明
**/
typedef void(*registry_notify_f)(url_t*, int);

typedef struct _registry_service registry_service_t;

//接口参数类型
typedef struct _registry_service_args {
	registry_service_t *param;
}registry_service_args_t;

//注册中心接口
typedef  struct _registry_service {
	//初始化，启动连接
	void (*start)(registry_service_args_t*);
	//注册url
	void (*registe)(registry_service_args_t*, url_t*);
	//取消注册
	void (*unregiste)(registry_service_args_t*, url_t*);
	//订阅path
	void (*subscribe)(registry_service_args_t*, url_t*, registry_notify_f );
	//取消订阅path
	void (*unsubscribe)(registry_service_args_t*, url_t*, registry_notify_f );
	//查找匹配某个Url的节点
	void (*lookup)(registry_service_args_t*, url_t*, url_t**, int *);
	//读取某个路径下的数据
	char* (*getData)(registry_service_args_t*, char*);
	//断开连接
	void (*stop)(registry_service_args_t*);
	//释放接口中的数据
	void(*destroy)(registry_service_args_t*);
	//接口的唯一标识，例如为注册中心地址
	char *key;
	//接口的其他数据，
	void *data;
}registry_service_t,*p_registry_service_t;




#ifdef __cplusplus
}
#endif

#endif // !HTSC_REGISTRY_SERVICE_H

